package com.je.app.view;

import java.awt.Dimension;

import javax.swing.JPanel;
import javax.swing.UIManager;
import javax.swing.JSeparator;

import java.awt.Color;

import javax.swing.JLabel;

import java.awt.Font;

import javax.swing.SwingConstants;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.DefaultTableModel;
import javax.swing.JTextField;
import javax.swing.JButton;

import com.je.app.control.ControlCaja;
import com.je.app.view.popUp.AgregarMovimiento;

import java.awt.SystemColor;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Caja extends JPanel{
	private JTable tablaTurnos;
	private JTable tablaIngresos;
	private JTable tablaEgresos;
	private JTextField textFieldTotalIngresos;
	private JTextField textFieldTotalEgresos;
	private JTextField textFieldTotalTurnos;
	private JTextField textFieldSaldoCaja;
	
	public Caja(Object[][] modelTurnos, Object[][] modelEntradas, Object[][] modelSalidas, double cajaInicial, double cajaFinal, double totalTurnos, double totalEntradas, double totalSalidas) {
		
		setSize(new Dimension(1024, 826));
		setLayout(null);
		
		JSeparator separator = new JSeparator();
		separator.setForeground(Color.LIGHT_GRAY);
		separator.setBounds(27, 49, 40, 1);
		add(separator);
		
		JLabel lblTurnos = new JLabel("Turnos");
		lblTurnos.setHorizontalAlignment(SwingConstants.CENTER);
		lblTurnos.setFont(new Font("Tahoma", Font.PLAIN, 16));
		lblTurnos.setBounds(60, 40, 72, 21);
		add(lblTurnos);
		
		JSeparator separator_1 = new JSeparator();
		separator_1.setOrientation(SwingConstants.VERTICAL);
		separator_1.setForeground(Color.LIGHT_GRAY);
		separator_1.setBounds(27, 49, 1, 599);
		add(separator_1);
		
		JSeparator separator_2 = new JSeparator();
		separator_2.setForeground(Color.LIGHT_GRAY);
		separator_2.setBounds(130, 49, 353, 1);
		add(separator_2);
		
		JSeparator separator_3 = new JSeparator();
		separator_3.setOrientation(SwingConstants.VERTICAL);
		separator_3.setForeground(Color.LIGHT_GRAY);
		separator_3.setBounds(482, 49, 1, 599);
		add(separator_3);
		
		JSeparator separator_4 = new JSeparator();
		separator_4.setForeground(Color.LIGHT_GRAY);
		separator_4.setBounds(27, 647, 456, 1);
		add(separator_4);
		
		JSeparator separator_5 = new JSeparator();
		separator_5.setForeground(Color.LIGHT_GRAY);
		separator_5.setBounds(521, 49, 40, 1);
		add(separator_5);
		
		JLabel lblIngresos = new JLabel("Ingresos");
		lblIngresos.setHorizontalAlignment(SwingConstants.CENTER);
		lblIngresos.setFont(new Font("Tahoma", Font.PLAIN, 16));
		lblIngresos.setBounds(558, 40, 81, 21);
		add(lblIngresos);
		
		JSeparator separator_6 = new JSeparator();
		separator_6.setOrientation(SwingConstants.VERTICAL);
		separator_6.setForeground(Color.LIGHT_GRAY);
		separator_6.setBounds(521, 49, 1, 205);
		add(separator_6);
		
		JSeparator separator_7 = new JSeparator();
		separator_7.setForeground(Color.LIGHT_GRAY);
		separator_7.setBounds(638, 49, 219, 1);
		add(separator_7);
		
		JSeparator separator_8 = new JSeparator();
		separator_8.setOrientation(SwingConstants.VERTICAL);
		separator_8.setForeground(Color.LIGHT_GRAY);
		separator_8.setBounds(856, 49, 1, 205);
		add(separator_8);
		
		JSeparator separator_9 = new JSeparator();
		separator_9.setForeground(Color.LIGHT_GRAY);
		separator_9.setBounds(521, 253, 336, 1);
		add(separator_9);
		
		JScrollPane scrollPane = new JScrollPane();
		scrollPane.setBounds(45, 67, 419, 562);
		add(scrollPane);
		
		tablaTurnos = new JTable();
		scrollPane.setViewportView(tablaTurnos);
		tablaTurnos.setModel(new DefaultTableModel(
			modelTurnos,
			new String[] {
				"Habitaci\u00F3n", "Entrada", "Salida", "Consumici\u00F3n", "Monto turno", "Total"
			}
		) {
			boolean[] columnEditables = new boolean[] {
				false, true, true, true, true, true, true
			};
			public boolean isCellEditable(int row, int column) {
				return columnEditables[column];
			}
		});
		DefaultTableCellRenderer modelocentrar = new DefaultTableCellRenderer();
		DefaultTableCellRenderer modeloderecha = new DefaultTableCellRenderer();
		modelocentrar.setHorizontalAlignment(SwingConstants.CENTER);
		modeloderecha.setHorizontalAlignment(SwingConstants.RIGHT);
		
		tablaTurnos.getColumnModel().getColumn(0).setResizable(false);
		tablaTurnos.getColumnModel().getColumn(0).setPreferredWidth(63);
		tablaTurnos.getColumnModel().getColumn(0).setMinWidth(63);
		tablaTurnos.getColumnModel().getColumn(0).setCellRenderer(modelocentrar);
		tablaTurnos.getColumnModel().getColumn(1).setResizable(false);
		tablaTurnos.getColumnModel().getColumn(1).setPreferredWidth(70);
		tablaTurnos.getColumnModel().getColumn(1).setCellRenderer(modelocentrar);
		tablaTurnos.getColumnModel().getColumn(2).setResizable(false);
		tablaTurnos.getColumnModel().getColumn(2).setPreferredWidth(70);
		tablaTurnos.getColumnModel().getColumn(2).setCellRenderer(modelocentrar);
		tablaTurnos.getColumnModel().getColumn(3).setResizable(false);
		tablaTurnos.getColumnModel().getColumn(3).setPreferredWidth(70);
		tablaTurnos.getColumnModel().getColumn(3).setCellRenderer(modeloderecha);
		tablaTurnos.getColumnModel().getColumn(4).setCellRenderer(modeloderecha);
		tablaTurnos.getColumnModel().getColumn(5).setCellRenderer(modeloderecha);
		
		JScrollPane scrollPane_1 = new JScrollPane();
		scrollPane_1.setBounds(539, 67, 300, 169);
		add(scrollPane_1);
		
		tablaIngresos = new JTable();
		scrollPane_1.setViewportView(tablaIngresos);
		tablaIngresos.setModel(new DefaultTableModel(modelEntradas,new String[] {"Detalle", "Importe"}) {
			
			public boolean isCellEditable(int row, int column) {
				return false;
		}});
		tablaIngresos.getColumnModel().getColumn(0).setPreferredWidth(150);
		tablaIngresos.getColumnModel().getColumn(1).setPreferredWidth(30);
		tablaIngresos.getColumnModel().getColumn(1).setCellRenderer(modeloderecha);
		JSeparator separator_10 = new JSeparator();
		separator_10.setForeground(Color.LIGHT_GRAY);
		separator_10.setBounds(521, 367, 40, 1);
		add(separator_10);
		
		JLabel lblEgresos = new JLabel("Egresos");
		lblEgresos.setHorizontalAlignment(SwingConstants.CENTER);
		lblEgresos.setFont(new Font("Tahoma", Font.PLAIN, 16));
		lblEgresos.setBounds(558, 359, 81, 21);
		add(lblEgresos);
		
		JSeparator separator_11 = new JSeparator();
		separator_11.setOrientation(SwingConstants.VERTICAL);
		separator_11.setForeground(Color.LIGHT_GRAY);
		separator_11.setBounds(521, 367, 1, 207);
		add(separator_11);
		
		JSeparator separator_12 = new JSeparator();
		separator_12.setForeground(Color.LIGHT_GRAY);
		separator_12.setBounds(638, 367, 219, 1);
		add(separator_12);
		
		JSeparator separator_13 = new JSeparator();
		separator_13.setOrientation(SwingConstants.VERTICAL);
		separator_13.setForeground(Color.LIGHT_GRAY);
		separator_13.setBounds(856, 367, 1, 207);
		add(separator_13);
		
		JSeparator separator_14 = new JSeparator();
		separator_14.setForeground(Color.LIGHT_GRAY);
		separator_14.setBounds(521, 573, 336, 1);
		add(separator_14);
		
		JLabel lblTotalIngresos = new JLabel("Total Ingresos:   $");
		lblTotalIngresos.setVerticalAlignment(SwingConstants.TOP);
		lblTotalIngresos.setHorizontalAlignment(SwingConstants.RIGHT);
		lblTotalIngresos.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblTotalIngresos.setBounds(558, 270, 235, 26);
		add(lblTotalIngresos);
		
		textFieldTotalIngresos = new JTextField();
		textFieldTotalIngresos.setText(totalEntradas + "");
		textFieldTotalIngresos.setHorizontalAlignment(SwingConstants.CENTER);
		textFieldTotalIngresos.setFont(new Font("Tahoma", Font.PLAIN, 12));
		textFieldTotalIngresos.setEditable(false);
		textFieldTotalIngresos.setColumns(10);
		textFieldTotalIngresos.setBounds(779, 265, 78, 26);
		add(textFieldTotalIngresos);
		
		JLabel lblTotalEgresos = new JLabel("Total Egresos:   $");
		lblTotalEgresos.setVerticalAlignment(SwingConstants.TOP);
		lblTotalEgresos.setHorizontalAlignment(SwingConstants.RIGHT);
		lblTotalEgresos.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblTotalEgresos.setBounds(558, 590, 235, 26);
		add(lblTotalEgresos);
		
		textFieldTotalEgresos = new JTextField();
		textFieldTotalEgresos.setText(totalSalidas + "");
		textFieldTotalEgresos.setHorizontalAlignment(SwingConstants.CENTER);
		textFieldTotalEgresos.setFont(new Font("Tahoma", Font.PLAIN, 12));
		textFieldTotalEgresos.setEditable(false);
		textFieldTotalEgresos.setColumns(10);
		textFieldTotalEgresos.setBounds(779, 585, 78, 26);
		add(textFieldTotalEgresos);
		
		JLabel lblTotalTurnos = new JLabel("Total Turnos:  $");
		lblTotalTurnos.setVerticalAlignment(SwingConstants.TOP);
		lblTotalTurnos.setHorizontalAlignment(SwingConstants.RIGHT);
		lblTotalTurnos.setFont(new Font("Tahoma", Font.PLAIN, 12));
		lblTotalTurnos.setBounds(182, 664, 235, 26);
		add(lblTotalTurnos);
		
		textFieldTotalTurnos = new JTextField();
		textFieldTotalTurnos.setText(totalTurnos + "");
		textFieldTotalTurnos.setHorizontalAlignment(SwingConstants.CENTER);
		textFieldTotalTurnos.setFont(new Font("Tahoma", Font.PLAIN, 12));
		textFieldTotalTurnos.setEditable(false);
		textFieldTotalTurnos.setColumns(10);
		textFieldTotalTurnos.setBounds(405, 659, 78, 26);
		add(textFieldTotalTurnos);
		
		JScrollPane scrollPane_2 = new JScrollPane();
		scrollPane_2.setBounds(539, 385, 300, 169);
		add(scrollPane_2);
		
		tablaEgresos = new JTable();
		scrollPane_2.setViewportView(tablaEgresos);
		tablaEgresos.setModel(new DefaultTableModel(modelSalidas,new String[] {"Detalle", "Importe"}) {
			
			public boolean isCellEditable(int row, int column) {
				return false;
		}});
		tablaEgresos.getColumnModel().getColumn(1).setCellRenderer(modeloderecha);
		
		JLabel lblSaldoEnCaja = new JLabel("Saldo en Caja:  $");
		lblSaldoEnCaja.setVerticalAlignment(SwingConstants.TOP);
		lblSaldoEnCaja.setHorizontalAlignment(SwingConstants.RIGHT);
		lblSaldoEnCaja.setFont(new Font("Tahoma", Font.BOLD, 14));
		lblSaldoEnCaja.setBounds(778, 745, 116, 26);
		add(lblSaldoEnCaja);
		
		textFieldSaldoCaja = new JTextField();
		textFieldSaldoCaja.setText(cajaFinal + "");
		textFieldSaldoCaja.setHorizontalAlignment(SwingConstants.RIGHT);
		textFieldSaldoCaja.setFont(new Font("Tahoma", Font.BOLD, 14));
		textFieldSaldoCaja.setEditable(false);
		textFieldSaldoCaja.setColumns(10);
		textFieldSaldoCaja.setBorder(null);
		textFieldSaldoCaja.setBounds(908, 746, 83, 14);
		add(textFieldSaldoCaja);
		
		JSeparator separator_15 = new JSeparator();
		separator_15.setForeground(Color.GRAY);
		separator_15.setBounds(778, 740, 213, 1);
		add(separator_15);
		
		JSeparator separator_16 = new JSeparator();
		separator_16.setForeground(Color.GRAY);
		separator_16.setBounds(779, 767, 212, 1);
		add(separator_16);
		
		JButton botonEliminarEgreso = new JButton("Eliminar Egreso");
		botonEliminarEgreso.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int filaSeleccionada = tablaEgresos.getSelectedRow();
				ControlCaja.getInstance().eliminarMovimiento(filaSeleccionada, "Egreso");
			}
		});
		botonEliminarEgreso.setForeground(Color.BLACK);
		botonEliminarEgreso.setFont(new Font("Tahoma", Font.PLAIN, 12));
		botonEliminarEgreso.setBorder(UIManager.getBorder("Button.border"));
		botonEliminarEgreso.setBackground(SystemColor.activeCaptionBorder);
		botonEliminarEgreso.setBounds(877, 514, 124, 26);
		add(botonEliminarEgreso);
		
		JButton botonAgregarEgreso = new JButton("Agregar Egreso");
		botonAgregarEgreso.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				new AgregarMovimiento("Egreso");
			}
		});
		botonAgregarEgreso.setForeground(Color.BLACK);
		botonAgregarEgreso.setFont(new Font("Tahoma", Font.PLAIN, 12));
		botonAgregarEgreso.setBorder(UIManager.getBorder("Button.border"));
		botonAgregarEgreso.setBackground(SystemColor.activeCaptionBorder);
		botonAgregarEgreso.setBounds(877, 403, 124, 26);
		add(botonAgregarEgreso);
		
		JButton botonModificarEgreso = new JButton("Modificar Egreso");
		botonModificarEgreso.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int filaSeleccionada = tablaEgresos.getSelectedRow();
				ControlCaja.getInstance().mostrarModificarMovimiento(filaSeleccionada, "Egreso");
			}
		});
		botonModificarEgreso.setForeground(Color.BLACK);
		botonModificarEgreso.setFont(new Font("Tahoma", Font.PLAIN, 12));
		botonModificarEgreso.setBorder(UIManager.getBorder("Button.border"));
		botonModificarEgreso.setBackground(SystemColor.activeCaptionBorder);
		botonModificarEgreso.setBounds(877, 459, 124, 26);
		add(botonModificarEgreso);
		
		JButton botonEliminarIngreso = new JButton("Eliminar Ingreso");
		botonEliminarIngreso.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int filaSeleccionada = tablaIngresos.getSelectedRow();
				ControlCaja.getInstance().eliminarMovimiento(filaSeleccionada, "Ingreso");
			}
		});
		botonEliminarIngreso.setForeground(Color.BLACK);
		botonEliminarIngreso.setFont(new Font("Tahoma", Font.PLAIN, 12));
		botonEliminarIngreso.setBorder(UIManager.getBorder("Button.border"));
		botonEliminarIngreso.setBackground(SystemColor.activeCaptionBorder);
		botonEliminarIngreso.setBounds(877, 194, 124, 26);
		add(botonEliminarIngreso);
		
		JButton botonAgregarIngreso = new JButton("Agregar Ingreso");
		botonAgregarIngreso.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				new AgregarMovimiento("Ingreso");
			}
		});
		botonAgregarIngreso.setForeground(Color.BLACK);
		botonAgregarIngreso.setFont(new Font("Tahoma", Font.PLAIN, 12));
		botonAgregarIngreso.setBorder(UIManager.getBorder("Button.border"));
		botonAgregarIngreso.setBackground(SystemColor.activeCaptionBorder);
		botonAgregarIngreso.setBounds(877, 83, 124, 26);
		add(botonAgregarIngreso);
		
		JButton botonModificarIngreso = new JButton("Modificar Ingreso");
		botonModificarIngreso.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				int filaSeleccionada = tablaIngresos.getSelectedRow();
				ControlCaja.getInstance().mostrarModificarMovimiento(filaSeleccionada, "Ingreso");
				
			}
		});
		botonModificarIngreso.setForeground(Color.BLACK);
		botonModificarIngreso.setFont(new Font("Tahoma", Font.PLAIN, 12));
		botonModificarIngreso.setBorder(UIManager.getBorder("Button.border"));
		botonModificarIngreso.setBackground(SystemColor.activeCaptionBorder);
		botonModificarIngreso.setBounds(877, 137, 124, 26);
		add(botonModificarIngreso);
		
		JButton botonGenerarCierre = new JButton("Generar Cierre de Caja");
		botonGenerarCierre.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				ControlCaja.getInstance().cerrarCaja();
			}
		});
		botonGenerarCierre.setForeground(Color.BLACK);
		botonGenerarCierre.setFont(new Font("Tahoma", Font.PLAIN, 12));
		botonGenerarCierre.setBorder(UIManager.getBorder("Button.border"));
		botonGenerarCierre.setBackground(SystemColor.activeCaptionBorder);
		botonGenerarCierre.setBounds(856, 670, 158, 26);
		add(botonGenerarCierre);
		
		JButton botonGenerarRetiro = new JButton("Generar Retiro de Caja");
		botonGenerarRetiro.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				new AgregarMovimiento("Retiro");
			}
		});
		botonGenerarRetiro.setForeground(Color.BLACK);
		botonGenerarRetiro.setFont(new Font("Tahoma", Font.PLAIN, 12));
		botonGenerarRetiro.setBorder(UIManager.getBorder("Button.border"));
		botonGenerarRetiro.setBackground(SystemColor.activeCaptionBorder);
		botonGenerarRetiro.setBounds(856, 633, 158, 26);
		add(botonGenerarRetiro);
		tablaEgresos.getColumnModel().getColumn(0).setPreferredWidth(150);
		tablaEgresos.getColumnModel().getColumn(1).setPreferredWidth(30);
		
	}
}